package com.vhall.component.plugin.common.utils;

import com.vhall.component.framework.common.utils.StringUtils;

import java.nio.ByteBuffer;
import java.util.Base64;

/**
 * BASE64的工具类
 *
 * @author yuanzh
 */
public class Base64Coding {

    public Base64Coding() {
    }

    /**
     * 按系统默认编码encode该字符串
     *
     * @param s
     * @return String
     */
    public static String encode(String s) {
        return Base64.getEncoder().encodeToString(s.getBytes());
    }

    /**
     * 对字节数组进行encode
     *
     * @param bytes
     * @return String
     */
    public static String encode(byte[] bytes) {
        return Base64.getEncoder().encodeToString(bytes);
    }

    /**
     * 对ByteBuffer进行encode
     *
     * @param buf
     * @return String
     */
    public static String encode(ByteBuffer buf) {
        return Base64.getEncoder().encodeToString(buf.array());
    }

    /**
     * 对BASE64的字符串进行decode，若decode失败，则返回null
     *
     * @param str
     * @return byte[]
     */
    public static byte[] decode(String str) {
        return Base64.getDecoder().decode(str);
    }

    /**
     * 对BASE64的字符串进行decode，若decode失败，则返回null
     *
     * @param s
     * @return
     */
    public static String decodeToString(String s) {
        return StringUtils.getUTF8String(Base64.getDecoder().decode(s));
    }

    public static byte[] decode(byte[] bytes) {
        return Base64.getDecoder().decode(bytes);
    }
}
